/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.ReglasNegocio.Funciones;

import com.clinicariobamba.Accesodatos.Conexion;
import com.clinicariobamba.ReglasNegocio.Clases.Dependencia;
import java.sql.ResultSet;
import java.util.ArrayList;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Gis
 */
public class FuncionesDependencia {

    public static ArrayList<Dependencia> obtenerDependencias() {
        try {
            Conexion con = new Conexion();
            ArrayList<Dependencia> list = new ArrayList();

            try {
                String sql = "select * from dependencia";
                ResultSet rs = con.ejecutarQuery(sql);

                while (rs.next()) {
                    list.add(new Dependencia(rs.getInt(1), rs.getString(2)));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de las Dependencias", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return list;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new ArrayList();
        }

    }

    public static ArrayList<Dependencia> obtenerDependenciasxOrganizacion(int idOrg) {
        try {
            Conexion con = new Conexion();
            ArrayList<Dependencia> list = new ArrayList();

            try {                
                String sql = "select d.id_dependencia,d.descripcion from dependencia as d inner join organizacion_dependencia as od \n"
                        + "on d.id_dependencia = od.id_dependencia\n"
                        + "where od.id_organizacion= "
                        + idOrg;
                ResultSet rs = con.ejecutarQuery(sql);

                while (rs.next()) {
                    list.add(new Dependencia(rs.getInt(1), rs.getString(2)));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de las Dependencias", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return list;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new ArrayList();
        }

    }

    public static Dependencia obtenerDependencia(int id) {
        try {
            Conexion con = new Conexion();
            Dependencia list = new Dependencia();

            try {
                String sql = String.format("select * from dependencia where id_dependencia = %d ", id);
                ResultSet rs = con.ejecutarQuery(sql);

                while (rs.next()) {
                    list.setIdDependencia(rs.getInt(1));
                    list.setDescripcion(rs.getString(2));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de la Dependencia", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return list;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new Dependencia();
        }

    }

    public static Dependencia obtenerDependenciaDes(String desc) {
        try {
            Conexion con = new Conexion();
            Dependencia list = new Dependencia();

            try {
                String sql = String.format("select * from dependencia where descripcion = '%s' ", desc);
                ResultSet rs = con.ejecutarQuery(sql);

                while (rs.next()) {
                    list.setIdDependencia(rs.getInt(1));
                    list.setDescripcion(rs.getString(2));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de la Dependencia", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return list;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new Dependencia();
        }

    }

    
    public static boolean insertar(Dependencia dependencia) throws Exception {
        boolean resultado;
        resultado = false;
        try {
            String sql = "SELECT `clinica riobamba`.`insertar_dependencia`('" + dependencia.getDescripcion() + "')";
            Conexion c = new Conexion();
            ResultSet rs = c.ejecutarQuery(sql);
            rs.next();
            resultado = rs.getBoolean(1);
            c.desconectar();
        } catch (Exception ex) {
            throw ex;

        }
        return resultado;

    }

    public static boolean modificar(Dependencia dependencia) throws Exception {
        boolean resultado;
        resultado = false;
        try {
            String sql = String.format(" SELECT `clinica riobamba`.`actualizar_dependencia`( %d ,'%s')",dependencia.getIdDependencia(),dependencia.getDescripcion());
            Conexion c = new Conexion();
            ResultSet rs = c.ejecutarQuery(sql);
            rs.next();
            resultado = rs.getBoolean(1);
            c.desconectar();

        } catch (Exception ex) {
            throw ex;

        }
        return resultado;
    }

    public static boolean eliminar(Dependencia dependencia) throws Exception {
        boolean resultado;
        resultado = false;
        try {
            String sql ="SELECT `clinica riobamba`.`eliminar_dependencia`("+dependencia.getIdDependencia()+")";
            Conexion c = new Conexion();
            ResultSet rs = c.ejecutarQuery(sql);
            rs.next();
            resultado = rs.getBoolean(1);
            c.desconectar();
        } catch (Exception ex) {
            throw ex;

        }
        return resultado;
    }

}
